<!DOCTYPE HTML>
<html lang="zh-CN">


<head>
    <meta charset="utf-8">
    <meta name="keywords" content="杰哥，你的八股文, Gtwff">
    <meta name="description" content="">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta name="renderer" content="webkit|ie-stand|ie-comp">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="referrer" content="no-referrer-when-downgrade">
    <!-- Global site tag (gtag.js) - Google Analytics -->

<script async src="https://www.googletagmanager.com/gtag/js?id="></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag() {
        dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', '');
</script>


    <title>杰哥，你的八股文 | Gtwff</title>
    <link rel="icon" type="image/png" href="/favicon.png">

    <link rel="stylesheet" type="text/css" href="/libs/awesome/css/all.css">
    <link rel="stylesheet" type="text/css" href="/libs/materialize/materialize.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css">
    <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css">
    <link rel="stylesheet" type="text/css" href="/css/matery.css">
    <link rel="stylesheet" type="text/css" href="/css/my.css">

    <script src="/libs/jquery/jquery.min.js"></script>

<meta name="generator" content="Hexo 5.4.0"></head>



   <style>
    body{
       background-image: url(https://cdn.jsdelivr.net/gh/Tokisaki-Galaxy/res/site/medias/background.jpg);
       background-repeat:no-repeat;
       background-size:cover;
       background-attachment:fixed;
    }
</style>



<body>
    <header class="navbar-fixed">
    <nav id="headNav" class="bg-color nav-transparent">
        <div id="navContainer" class="nav-wrapper container">
            <div class="brand-logo">
                <a href="/" class="waves-effect waves-light">
                    
                    <img src="/medias/logo.png" class="logo-img" alt="LOGO">
                    
                    <span class="logo-span">Gtwff</span>
                </a>
            </div>
            

<a href="#" data-target="mobile-nav" class="sidenav-trigger button-collapse"><i class="fas fa-bars"></i></a>
<ul class="right nav-menu">
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/" class="waves-effect waves-light">
      
      <i class="fas fa-home" style="zoom: 0.6;"></i>
      
      <span>首页</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/tags" class="waves-effect waves-light">
      
      <i class="fas fa-tags" style="zoom: 0.6;"></i>
      
      <span>标签</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/categories" class="waves-effect waves-light">
      
      <i class="fas fa-bookmark" style="zoom: 0.6;"></i>
      
      <span>分类</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/archives" class="waves-effect waves-light">
      
      <i class="fas fa-archive" style="zoom: 0.6;"></i>
      
      <span>归档</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/about" class="waves-effect waves-light">
      
      <i class="fas fa-user-circle" style="zoom: 0.6;"></i>
      
      <span>关于</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/contact" class="waves-effect waves-light">
      
      <i class="fas fa-comments" style="zoom: 0.6;"></i>
      
      <span>留言板</span>
    </a>
    
  </li>
  
  <li class="hide-on-med-and-down nav-item">
    
    <a href="/friends" class="waves-effect waves-light">
      
      <i class="fas fa-address-book" style="zoom: 0.6;"></i>
      
      <span>友情链接</span>
    </a>
    
  </li>
  
  <li>
    <a href="#searchModal" class="modal-trigger waves-effect waves-light">
      <i id="searchIcon" class="fas fa-search" title="搜索" style="zoom: 0.85;"></i>
    </a>
  </li>
</ul>


<div id="mobile-nav" class="side-nav sidenav">

    <div class="mobile-head bg-color">
        
        <img src="/medias/logo.png" class="logo-img circle responsive-img">
        
        <div class="logo-name">Gtwff</div>
        <div class="logo-desc">
            
            Never really desperate, only the lost of the soul.
            
        </div>
    </div>

    <ul class="menu-list mobile-menu-list">
        
        <li class="m-nav-item">
	  
		<a href="/" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-home"></i>
			
			首页
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/tags" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-tags"></i>
			
			标签
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/categories" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-bookmark"></i>
			
			分类
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/archives" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-archive"></i>
			
			归档
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/about" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-user-circle"></i>
			
			关于
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/contact" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-comments"></i>
			
			留言板
		</a>
          
        </li>
        
        <li class="m-nav-item">
	  
		<a href="/friends" class="waves-effect waves-light">
			
			    <i class="fa-fw fas fa-address-book"></i>
			
			友情链接
		</a>
          
        </li>
        
        
        <li><div class="divider"></div></li>
        <li>
            <a href="https://gitee.com/kuangty/kuangty" class="waves-effect waves-light" target="_blank">
                <i class="fab fa-github-square fa-fw"></i>Fork Me
            </a>
        </li>
        
    </ul>
</div>


        </div>

        
            <style>
    .nav-transparent .github-corner {
        display: none !important;
    }

    .github-corner {
        position: absolute;
        z-index: 10;
        top: 0;
        right: 0;
        border: 0;
        transform: scale(1.1);
    }

    .github-corner svg {
        color: #0f9d58;
        fill: #fff;
        height: 64px;
        width: 64px;
    }

    .github-corner:hover .octo-arm {
        animation: a 0.56s ease-in-out;
    }

    .github-corner .octo-arm {
        animation: none;
    }

    @keyframes a {
        0%,
        to {
            transform: rotate(0);
        }
        20%,
        60% {
            transform: rotate(-25deg);
        }
        40%,
        80% {
            transform: rotate(10deg);
        }
    }
</style>

<a href="https://gitee.com/kuangty/kuangty" class="github-corner tooltipped hide-on-med-and-down" target="_blank"
   data-tooltip="Fork Me" data-position="left" data-delay="50">
    <svg viewBox="0 0 250 250" aria-hidden="true">
        <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
        <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
              fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
        <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
              fill="currentColor" class="octo-body"></path>
    </svg>
</a>
        
    </nav>

</header>

    



<div class="bg-cover pd-header post-cover" style="background-image: url('/medias/featureimages/18.jpg')">
    <div class="container" style="right: 0px;left: 0px;">
        <div class="row">
            <div class="col s12 m12 l12">
                <div class="brand">
                    <h1 class="description center-align post-title">杰哥，你的八股文</h1>
                </div>
            </div>
        </div>
    </div>
</div>




<main class="post-container content">

    
    <link rel="stylesheet" href="/libs/tocbot/tocbot.css">
<style>
    #articleContent h1::before,
    #articleContent h2::before,
    #articleContent h3::before,
    #articleContent h4::before,
    #articleContent h5::before,
    #articleContent h6::before {
        display: block;
        content: " ";
        height: 100px;
        margin-top: -100px;
        visibility: hidden;
    }

    #articleContent :focus {
        outline: none;
    }

    .toc-fixed {
        position: fixed;
        top: 64px;
    }

    .toc-widget {
        width: 345px;
        padding-left: 20px;
    }

    .toc-widget .toc-title {
        padding: 35px 0 15px 17px;
        font-size: 1.5rem;
        font-weight: bold;
        line-height: 1.5rem;
    }

    .toc-widget ol {
        padding: 0;
        list-style: none;
    }

    #toc-content {
        padding-bottom: 30px;
        overflow: auto;
    }

    #toc-content ol {
        padding-left: 10px;
    }

    #toc-content ol li {
        padding-left: 10px;
    }

    #toc-content .toc-link:hover {
        color: #42b983;
        font-weight: 700;
        text-decoration: underline;
    }

    #toc-content .toc-link::before {
        background-color: transparent;
        max-height: 25px;

        position: absolute;
        right: 23.5vw;
        display: block;
    }

    #toc-content .is-active-link {
        color: #42b983;
    }

    #floating-toc-btn {
        position: fixed;
        right: 15px;
        bottom: 76px;
        padding-top: 15px;
        margin-bottom: 0;
        z-index: 998;
    }

    #floating-toc-btn .btn-floating {
        width: 48px;
        height: 48px;
    }

    #floating-toc-btn .btn-floating i {
        line-height: 48px;
        font-size: 1.4rem;
    }
</style>
<div class="row">
    <div id="main-content" class="col s12 m12 l9">
        <!-- 文章内容详情 -->
<div id="artDetail">
    <div class="card">
        <div class="card-content article-info">
            <div class="row tag-cate">
                <div class="col s7">
                    
                    <div class="article-tag">
                        
                            <a href="/tags/%E9%9D%A2%E8%AF%95%E9%A2%98/">
                                <span class="chip bg-color">面试题</span>
                            </a>
                        
                    </div>
                    
                </div>
                <div class="col s5 right-align">
                    
                    <div class="post-cate">
                        <i class="fas fa-bookmark fa-fw icon-category"></i>
                        
                            <a href="/categories/%E5%85%AB%E8%82%A1%E6%96%87/" class="post-category">
                                八股文
                            </a>
                        
                    </div>
                    
                </div>
            </div>

            <div class="post-info">
                
                <div class="post-date info-break-policy">
                    <i class="far fa-calendar-minus fa-fw"></i>发布日期:&nbsp;&nbsp;
                    2021-10-30
                </div>
                

                
                <div class="post-date info-break-policy">
                    <i class="far fa-calendar-check fa-fw"></i>更新日期:&nbsp;&nbsp;
                    2021-10-30
                </div>
                

                
                <div class="info-break-policy">
                    <i class="far fa-file-word fa-fw"></i>文章字数:&nbsp;&nbsp;
                    9.2k
                </div>
                

                
                <div class="info-break-policy">
                    <i class="far fa-clock fa-fw"></i>阅读时长:&nbsp;&nbsp;
                    33 分
                </div>
                

                
                    <div id="busuanzi_container_page_pv" class="info-break-policy">
                        <i class="far fa-eye fa-fw"></i>阅读次数:&nbsp;&nbsp;
                        <span id="busuanzi_value_page_pv"></span>
                    </div>
				
            </div>
        </div>
        <hr class="clearfix">

        
        <!-- 是否加载使用自带的 prismjs. -->
        <link rel="stylesheet" href="/libs/prism/prism.css">
        

        
        <!-- 代码块折行 -->
        <style type="text/css">
            code[class*="language-"], pre[class*="language-"] { white-space: pre-wrap !important; }
        </style>
        

        <div class="card-content article-card-content">
            <div id="articleContent">
                <h2 id="1、Java"><a href="#1、Java" class="headerlink" title="1、Java"></a>1、Java</h2><ul>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/597041?channel=-1&source_id=profile_follow_post_nctrack">博文</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/601272?channel=-1&source_id=profile_follow_post_nctrack">博文</a></li>
<li>说一下hashmap，红黑树和平衡二叉树有什么区别，为什么不使用平衡二叉树？ </li>
<li>Hashmap链表插入方式为什么是尾插？说说Concurrenthashmap，他是如何加锁，put和get有什么区别 </li>
<li>Hashtable的底层是什么，为什么线程安全</li>
<li>面向对象的特性，怎么理解多态？</li>
<li>重写和重载的区别</li>
<li>Arraylist和linkedlist的区别？</li>
<li>抽象类和接口的区别，接口里允许有私有方法吗？</li>
<li>Hashmap是线程安全的吗？为什么不安全？</li>
<li>知道函数式编程吗？（lambda）</li>
<li>讲一下hashmap实现原理？重写equals方法为什么一定要重写hashcode方法</li>
<li>Hashmap</li>
<li>说一下java集合，他们各自有什么结构特点，分别适用什么样的情况</li>
<li>Hashset如何实现的，如何遍历一个hashmap（我回答是iterator迭代器），迭代器迭代的是谁，用的是什么方法？ </li>
<li>Hashmap底层的实现了解多少？Hash根据什么算出来的？对象的equals方法在什么时候会用</li>
<li>Object类里都有什么方法？</li>
<li>Arraylist和linkedlist的区别？</li>
<li>currenthashmap如何实现线程安全？怎么保证扩容的线程安全</li>
<li>解决hash冲突有哪些方法？</li>
<li>说一下java基础，hashmap了解吗，时间复杂度是多少，底层是什么数据结构。</li>
<li>java里面final finally finalize区别</li>
<li>arraylist和linkedlist区别，</li>
<li>hashmap和treemap的区别</li>
<li>java里面的反射原理。</li>
<li>java对象的创建方法？</li>
<li>面向对象三大特性：封装、继承、多态如何在Java中体现 </li>
<li>String StringBuilder StringBuffer区别 “”+””实现过程 </li>
<li>什么时候重写hashcode和equals方法 </li>
<li>深拷贝浅拷贝 </li>
<li>BIO、NIO、AIO原理及应用场景</li>
<li>List、Map、Set区别及使用场景 </li>
<li>对比List、Map、Set的各种子类 </li>
<li>HashMap原理 扩容缩容机制、存储结构、rehash实现方法等 一定要熟悉底层代码实现及算法原理 </li>
<li>HashSet如何查重 </li>
<li>ArrayList 和 Vector 的区别</li>
<li> java泛型原理</li>
<li> java注解原理</li>
<li>hashtable和hashmap区别</li>
<li>==和equals区别</li>
<li>HashMap底层实现，扩容阈值，具体怎么扩容，扩容优化，抖动函数，集合大小为什么是2的幂，为什么阈值是8(源码里是8-1），jkd1.7,1.8具体优化的地方。 </li>
<li>线程安全集合，ConcurrentHashMap,具体实现，jdk1.7,jkd1.8区别，分段锁，锁粒度，好像答的不够多，然后又挤出来一个计数方法，1.8计数特别麻烦。</li>
<li>final修饰类 方法 属性区别。</li>
<li>说下对java继承、封装、多态的理解</li>
<li>Java中常见的集合类 </li>
<li>ArrayList和LinkedList的区别 </li>
<li>如果要保证线程安全该怎么做 </li>
<li>说一下hashmap和concurrenthashmap </li>
<li>java中还有那些线程安全的集合 </li>
<li>hashtable和concurrenthashmap哪个效率高</li>
<li>concurrenthashmap说一下，它是如何保证线程安全的？</li>
<li>Java 的流式处理了解么?</li>
<li>HashMap 八股文讲讲?</li>
<li>HashMap put 里面已经有100000 个数据了,往里面 put 第 100001 个数据会不会扩容?</li>
<li>你觉得采用链表加红黑树的组合方式之后解决了什么问题?</li>
<li>那么多数据结构,为什么偏偏使用红黑树?</li>
<li>红黑树的平衡怎么做?</li>
<li>链表转化成红黑树的阈值怎么算出来的?</li>
<li>为什么红黑树缩回链表的阈值和进化的阈值不一样?</li>
<li>讲讲面向对象的一些特性?</li>
<li>面向过程和面向对象的区别?</li>
<li>对象和类的关系?</li>
<li>Collection下的集合有哪些？</li>
<li>Java的特点</li>
<li>看过hashmap的源码吗？</li>
<li>java面向对象的特点？</li>
<li>Java的继承？</li>
<li>Hashmap和Hashtable的区别？</li>
<li>集合类有哪些？ </li>
<li>如何访问一个私有的对象？ </li>
<li>String s=“abc”和new string（abc）的区别？ </li>
<li>如果声明了对象，但是对象没有初始化，使用对象会怎么样？ </li>
<li>重写和重载的区别？ </li>
<li>抽象类和接口的区别</li>
<li>Java中的反射</li>
<li>Arraylist底层数据结构，扩容机制，初始容量</li>
<li>HashMap底层数据结构，扩容机制，初始容量，负载因子，哈希计算公式</li>
<li>new一个对象的过程，从jvm层面阐述</li>
<li>接口和抽象类的区别</li>
<li>多态的理解？重写和重载、静态方法可以重写么？</li>
<li>反射 用过么？怎么用的？优缺点？生成类对象的几种方式？</li>
<li>异常类</li>
<li>new String(“s”)，讲一下这个过程，生成几个对象</li>
<li>equals和hashCode</li>
</ul>
<h2 id="2、网络"><a href="#2、网络" class="headerlink" title="2、网络"></a>2、网络</h2><ul>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/585756?channel=-1&source_id=profile_follow_post_nctrack">博文</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/613239?channel=-1&source_id=profile_follow_post_nctrack">博文</a></li>
<li>tcp、udp区别</li>
<li>tcp如何保障可靠</li>
<li>time_wait状态产生原因和危害</li>
<li>tcp拥塞控制机制</li>
<li>从浏览器输入一个URL到返回响应的完整过程 </li>
<li>网络带宽网速计算，10m带宽的实际下载速度</li>
<li>tcp与udp的区别概述</li>
<li>tcp的三次握手与四次挥手的过程及其原因</li>
<li>DNS解析原理，使用的底层协议</li>
<li>网络情况良好的情况下，分布式项目的rpc远程调用使用的是tcp还是udp？此时tcp性能更加，为什么</li>
<li>udp如何做到可靠传输 </li>
<li>tcp的拥塞控制</li>
<li>http使用的是tcp还是udp</li>
<li>https与http的区别，https是如何做到安全性的</li>
<li>https是否可以抓包？如果能，那么如何分析包中内容</li>
<li>get与post请求的区别，post的安全性体现在那里，是否可以发现他的请求内容</li>
<li>socket编程，分为客户端和服务端分别说</li>
<li>背一下网络模型，http在哪一层，tcp在哪一层，tcp有什么特性，怎么保证可靠性</li>
<li>讲一讲token各部分放了什么，干嘛的？</li>
<li>在浏览器里输入url后会发生什么？</li>
<li>在浏览器里输入url后整个过程</li>
<li>Dns协议在哪一层，tcp在哪一层，tcp如何保证传输顺序，滑动窗口协议</li>
<li>Tcp和udp区别</li>
<li>http协议和https协议的区别，https通信原理整个流程</li>
<li>讲讲三次握手</li>
<li>301和302的区别</li>
<li>讲一下TCP三次握手，为什么要三次握手，TCP的SYN Flood洪水攻击了解吗</li>
<li>说一下OSI网络模型和TCP/IP协议栈？ARP协议的作用是什么？TCP和UDP的区别，TCP怎么做到流量控制？TCP和HTTP有什么联系？说一下HTTPS的通信加密的整个流程？ </li>
<li>HTTP的header头有哪些信息？</li>
<li>Get和post请求的区别</li>
<li>了解跨域问题吗？</li>
<li>说一说计网的五层结构？TCP和UDP区别？TCP如何保证传输的稳定？说说TCP和UDP支持的上层协议</li>
<li>简述在浏览器中输入一个url得到一个页面的全过程。</li>
<li>TCP/IP协议包括几层，应用层的主要协议，ICMP协议是第几层协议。简述ICMP协议</li>
<li>TCP的粘包是什么？Tcp如何保证可靠性的？</li>
<li>网络的七层通信模型，常见的协议比如 TCP、IP、UDP、ARP、HTTP、FTP 等都位于哪一层 </li>
<li>常见 Http 的状态码的含义（常见的502，500，404，302，204，200等），遇到对应问题知道如何去处理 </li>
<li>Http请求的构成 </li>
<li>GET 和 POST 有什么区别  </li>
<li>TCP 和 UDP 的区别（TCP 为什么可以保证传输的可靠性） </li>
<li>TCP 的三次握手和四次挥手（为什么挥手需要四次） </li>
<li>TCP 的拥塞控制（慢开始，拥塞避免，快重传，快恢复） </li>
<li>什么是 ARP 协议。 </li>
<li>ping 命令的实现原理，ping 命令为什么不需要端口号 </li>
<li>从输入 URL 到页面加载发生了什么？ </li>
<li>长连接和短连接</li>
<li>计网5层模型和7层模型 </li>
<li>应用层协议有什么 </li>
<li>输入网址发送请求到接受响应的过程 </li>
<li>网络拥堵可能有什么原因 </li>
<li>TCP拥塞避免算法</li>
<li>延迟ACK了解么？</li>
<li>ipv6和ipv4的区别</li>
<li>可以简单说一下http吗</li>
<li>http1.0和http2.0的区别</li>
<li>七层网络模型</li>
<li>为什么有了七层还有五层的概念?</li>
<li>HTTP 和 RPC 的关系?区别?</li>
<li>HTTPS 的秘钥交换过程?</li>
<li>DNS 解析流程?</li>
<li>拥塞控制?流量控制?</li>
<li>三次握手和四次挥手的过程?</li>
<li>301 和 302 状态码的区别?</li>
<li>Cookie和session的区别</li>
<li>DNS，TCP分别是什么层的协议</li>
<li>OSI七层参考模型</li>
<li>数据链路层和物理层了解哪些协议</li>
<li>TCP三次握手建立连接之后，客户端如果突然垮了，咋办</li>
<li>HTTP状态码301，302，304，403，404，500，501，503</li>
<li>HTTPS协议如何实现安全</li>
<li>HTTPS是对称加密还是非对称加密</li>
<li>HTTPS协议中随机数的作用</li>
<li>三次握手四次挥手</li>
<li>TCP （三次握手和四次挥手，拥塞控制，流量控制，里面各种恩爱情仇要搞懂）、UDP它们的运用场景，UDP如何实现可靠</li>
<li>cookie和session简单介绍</li>
<li>session如何储存的？</li>
<li>分布式session如何实现？</li>
<li>HTTP和HTTPS</li>
<li>证书验证</li>
<li>中间人攻击</li>
<li>HTTP长连接和TCP长连接</li>
<li>SSL整个握手过程</li>
</ul>
<h2 id="3、操作系统"><a href="#3、操作系统" class="headerlink" title="3、操作系统"></a>3、操作系统</h2><ul>
<li>进程、线程区别</li>
<li>进程同步机制</li>
<li>linux的命令考察：怎么找占用端口的进程</li>
<li>Linux如何查看端口的连接状态</li>
<li>进程与线程的区别，为什么要有进程与线程的区分，协程</li>
<li>进程的上下文切换</li>
<li>进程的状态</li>
<li>线程通信的方式</li>
<li>Linux常用的指令？</li>
<li>进程和线程的区别，进程怎么通信，什么是管道</li>
<li>计算机里的大端字节序和小端字节序是什么？</li>
<li>僵尸进程的原理，进程间通信的方式，操作系统的进程调度算法有哪些</li>
<li>Linux指令说说</li>
<li>简单说5-10个linux指令</li>
<li>进程间通信方式</li>
<li>linux的ping命令</li>
<li>linux进程间如何通讯的？</li>
<li>操作系统的线程与进程的区别，线程有几种状态？</li>
<li>线程间通信的方式与进程间通信的方式。</li>
<li>什么是死锁？死锁的必要条件，如何避免死锁？</li>
<li>进程的调度算法</li>
<li>磁盘的寻道算法</li>
<li>I/O 模型</li>
<li>如何线程同步？有哪些方式</li>
<li>进程和线程的切换上下文 </li>
<li>上下文指什么 </li>
<li>线程之间同步的机制 </li>
<li>物理地址和虚拟地址的区别 </li>
<li> 为什么要分成物理地址和虚拟地址 </li>
<li>逻辑地址呢？（我回答虚拟地址就是逻辑地址） </li>
<li>虚拟地址转换为物理地址的过程 </li>
<li>快表是存储在哪里的</li>
<li>磁盘调度算法?</li>
<li>操作系统死锁?</li>
<li>进程和线程的区别?</li>
<li>哪一种 IPC 最快?</li>
<li>线程的几种状态?</li>
<li>进程调度策略?</li>
<li>线程进程区别</li>
<li>进程通信方式</li>
<li>cup调度，内核态，用户态，中断（陷入）是什么？</li>
<li>进程的状态？操作系统的线程有什么？（内核线程，用户线程等等）</li>
<li>进程调度？</li>
</ul>
<h2 id="4、MySQL"><a href="#4、MySQL" class="headerlink" title="4、MySQL"></a>4、MySQL</h2><ul>
<li>索引种类</li>
<li>索引底层实现（B树、B+树的区别）</li>
<li>myisam、innodb区别</li>
<li>事务隔离级别（事务隔离级别实现，主要是mvcc机制，这个答得不好，没原理层面答）</li>
<li>Innodb如何实现ACID这四大特性</li>
<li>分库分表方案，遇到两个的问题（非partion key的查询优化、分库分表后的扩容策略）</li>
<li>Mysql使用哪种搜索引擎，innodb有哪些特性</li>
<li>Innodb的索引用的是什么，b+树的特性是什么</li>
<li>聚集索引和非聚集索引在数据结构上有什么区别？</li>
<li>Mysql事务隔离级别，有什么区别，什么是脏读幻读不可重复读</li>
<li>平常建立索引，使用什么索引？</li>
<li>Mysql的索引的作用？Innodb和myisam的区别？有哪几种行锁？</li>
<li>Mysql事务隔离级别？什么是脏读？Myaql事务特性（我说acdi），事务具有隔离性的话为什么会读到其他事务未提交的数据呢？</li>
<li>Mysql索引如何实现？</li>
<li>说一下事务的基本要素，引发的问题以及合理解决的方法？脏读幻读不可重复读分别是什么？Mysql的索引是怎么实现的，一般怎么用？</li>
<li>项目的数据库的数据量，数据库中存用户名密码有什么要注意的吗？</li>
<li>索引有哪些类型？使用联合索引有什么注意的地方？</li>
<li>Sql优化，A表B表做联合查询怎么做，inner join和左连接和右连接的区别？</li>
<li>什么是sql注入，如何防止sql注入？</li>
<li>项目里的数据库是单机还是主从复制架构？知道主从数据库吗？</li>
<li>MySQL的事务隔离级别，各解决什么问题，MySQL的默认隔离级别是什么，什么是内连接外连接交叉连接，他们的mysql指令怎么写？ </li>
<li>Innodb怎么实现行锁？ </li>
<li>什么是最左前缀原则？Mysql有哪些索引优化的方法？</li>
<li>说说Mysql的索引，假如往b树里插入一个数，子节点满了，如何插入</li>
<li>Innodb和myisam的区别，用的什么索引？讲一下通过普通索引/聚簇索引查询数据的流程？</li>
<li>MySQL事务隔离级别，什么是幻读，MySQL如何解决不可重复读？知道MVVC吗？</li>
<li>Mysql底层数据结构，b树和b+树的区别</li>
<li>B+树怎么实现的，是二叉树嘛</li>
<li>Java进程和mysql进程如何通讯</li>
<li>mysql的索引，B+树的原理，聚簇索引和非聚簇索引的区别。</li>
<li>一条sql语句（增加、删除、修改语句）在MySQL中如何执</li>
<li>对比常见的存储引擎（主要对比innodb 和 myisam 最好能多说出几种常见的存储引擎及特点）</li>
<li>索引（能说出innodb 和myisam 的策略最好）</li>
<li>事务 什么是事务 并发事务带来的问题</li>
<li>事务隔离级别 innodb如何保证（主要说如何解决幻读）</li>
<li>innodb 锁机制</li>
<li>innodb 日志 mysql 日志 两段式提交</li>
<li>一条sql执行的慢的原因</li>
<li>大表优化</li>
<li>mysql不同存储引擎存储结构</li>
<li>MySQL 索引为什么采用B+树？</li>
<li>MySQL的索引类型有什么</li>
<li>联合索引是什么</li>
<li>怎么使用到联合索引</li>
<li>为什么使用联合索引要符合最左前缀匹配</li>
<li>B树和B+树区别</li>
<li>MySQL索引相关，聚簇索引。</li>
<li>innodb和myisam的区别。</li>
<li>四个隔离级别，每个级别分别解决了什么问题，讲了默认隔离级别和常用隔离级别。</li>
<li>gap lock, record lock ,next key loc</li>
<li>MVCC怎么实现的，解决了什么问题，undolog讲了一点。</li>
<li>B+树讲了一点。</li>
<li>脏读 幻读，讲一下幻读场景。</li>
<li>mysql数据库引擎有哪些？之间又有什么区别 </li>
<li>可以说下数据库范式吗？ </li>
<li>回表了解过吗？ </li>
<li>索引为什么快？所以你的数据结构（答B+，随之又问还有吗？） </li>
<li>如果让你给B+树下一个定义，你怎么下？ </li>
<li>说一下数据库隔离级别 </li>
<li>说一下脏读和幻读</li>
<li>MySQL 各种索引的一些差异</li>
<li>什么是聚簇索引?什么是非聚簇索引?</li>
<li>Innodb 是怎么保证崩溃恢复能力的?(两阶段日志提交)</li>
<li>Innodb的优缺点?(围绕索引数展开讲)</li>
<li>索引覆盖?回表?唯一索引?非唯一索引?最左原则?</li>
<li>explain 里面有哪些字段?</li>
<li>一个 SQL 查询很慢,从哪些地方进行优化?</li>
<li>自增 ID 和 UUID 的区别?(叶分裂)</li>
<li>自增 ID 申请完了会发生什么事情?</li>
<li>分库解决了什么问题?分表解决了什么问题?</li>
<li>数据库热点查询的数据,怎么做性能优化?</li>
<li>Innodb 的索引树数据结构?</li>
<li>最左原则?</li>
<li>Innodb 索引的数据结构?为什么用 B+树?</li>
<li>MySQl 主从集群怎么搞?</li>
<li>Binlog 有几种?区别是什么?</li>
<li>最左原则?联合索引?</li>
<li>为什么会有最左匹配原则?(根据 B+树排序规则去回答)</li>
<li>为什么使用 B+树?回表?怎么减少回表?</li>
<li>数据库的乐观锁和悲观锁?</li>
<li>读锁和写锁的区别?</li>
<li>MySQL中的事务是怎么实现的?</li>
<li>隔离级别的区别?都是怎么实现的?</li>
<li>事务数组是什么?高水位指的是哪些?低水位指的是哪些?</li>
<li>Innodb 索引数据结构?</li>
<li>SQL 语句执行流程?分析器优化器执行器都是什么?</li>
<li>回表?索引下推?</li>
<li>数据库的事务特性?</li>
<li>隔离级别的差异?为什么会有这种差异?</li>
<li>讲讲可重复读和读提交隔离级别和实现机制?</li>
<li>什么是”当前读”?</li>
<li>MySQL的事务的特征？</li>
<li>MySQL的连接？</li>
<li>数据库范式 </li>
<li>线程的状态 </li>
<li>获取数据库当前时间 </li>
<li>事务的隔离级别 </li>
<li>线程和进程的区别 </li>
<li>表的连接， </li>
<li>数据库存储引擎 </li>
<li>MySQL索引类型 </li>
<li>MySQL优化</li>
<li>Mysql存储引擎？</li>
<li>b+树的特点？为什么使用b+树索引？</li>
<li>数据隔离级别</li>
<li>数据隔离级别怎么实现（mvcc）</li>
<li>聚集索引和非聚集索引区别</li>
<li>InnoDB中辅助索引查询过程</li>
<li>mysql事务隔离级别</li>
<li>mysql如何在不可重复读级别上解决的幻读</li>
<li>mysql中的间隙锁是啥</li>
<li>MySQL中InnoDB有哪些索引类型</li>
<li>索引用的什么数据结构（b+树好好看看原理）</li>
<li>MySQL是如何解决幻读的（next-key锁和MVCC） </li>
<li>MySQL的一条sql语句执行流程 </li>
<li>为什么要选择InnoDB，有哪些特性 </li>
<li>MySQL事务和隔离级别 </li>
<li>MySQL死锁解决策略</li>
<li>SQL如何调优 </li>
<li>change buffer和redo log区别 </li>
<li> mysql什么时候会选错索引 </li>
<li>什么情况下适合建立索引，什么情况不合适</li>
<li> MySQL的各种锁</li>
<li>事务+隔离级别+问题+实现</li>
<li>索引结构</li>
<li>存储引擎</li>
<li>Insert语句和delete语句执行过程，具体是怎么到磁盘的</li>
</ul>
<h2 id="5、并发"><a href="#5、并发" class="headerlink" title="5、并发"></a>5、并发</h2><ul>
<li><p>如何应对高并发</p>
</li>
<li><p>Synchronized有几种用法？他锁的是什么？怎么加锁，如何使锁生效？Synchronized的底层是怎么做的？（面试官：锁的是对象，在对象的头里加了一个计数器，进行锁升级） </p>
</li>
<li><p>Volatile有原子性吗？</p>
</li>
<li><p>多线程用过吗？线程间通信方式？Wait，notify，sleep有什么区别？</p>
</li>
<li><p>threadLocal用过吗？</p>
</li>
<li><p>乐观锁和悲观锁，讲一讲CAS。</p>
</li>
<li><p>讲一下线程池的核心参数都是什么意思？核心线程数和最大线程数这两个有什么关系，为什么要有这两个参数？</p>
</li>
<li><p>了解过并发编程的队列linkedblochqueue之类的？</p>
</li>
<li><p>了解乐观锁悲观锁吗？</p>
</li>
<li><p>Volatile关键字，底层实现机制</p>
</li>
<li><p>Java线程的生命周期和切换的条件都是什么？Sleep和wait方法的区别</p>
</li>
<li><p>Join和yield的方法作用是什么？</p>
</li>
<li><p>说一下synchronized实现的机制，举个例子：有个类中有两个静态方法A，B都用了synchronized修饰，现在又两个线程1，2。1执行A方法，同时2执行B方法，能执行吗，为什么？</p>
</li>
<li><p>并行并发的联系和区别，线程和进程的联系和区别？</p>
</li>
<li><p>线程安全框架有哪些？currenthashmap如何实现线程安全？和hashtable有什么区别？ </p>
</li>
<li><p>创建线程的方式，runnable和callable的区别？ </p>
</li>
<li><p>一个线程的生命周期是什么，线程start之后会一直执行吗？</p>
</li>
<li><p>Java中实现锁有什么方法？讲讲volatile，如何实现数据可见性？ </p>
</li>
<li><p>Java创建线程池的方法？线程池的种类和参数？举个例子：核心线程数是5，最大线程数是10，workqueue是10，现在要有运行6个线程，讲下流程</p>
</li>
<li><p>并发的时候会出现什么线程问题？Hashmap是线程安全的吗？除了数据问题还会有什么问题？Happens-before是什么？Volatile如何保证数据可见性</p>
</li>
<li><p>Synchronized和lock有什么区别？ </p>
</li>
<li><p>Synchronized加在普通方法上锁的是什么？加在静态方法上锁的是什么？ </p>
</li>
<li><p>创建线程池的方法？线程池的实现原理。 </p>
</li>
<li><p>创建一个thread线程，我要跑10个runnable，怎么做？</p>
</li>
<li><p>Java并发，线程创建，多线程的四种实现</p>
</li>
<li><p>乐观锁和悲观锁</p>
</li>
<li><p>读锁和写锁是什么？</p>
</li>
<li><p>死锁的原因和防止死锁。</p>
</li>
<li><p>乐观锁和悲观锁。高并发的场景下用哪种。</p>
</li>
<li><p>死锁，死锁的原因，如何防止死锁</p>
</li>
<li><p>.java线程池，常见的参数，7个，线程池核心线程大小，线程池最大线程数量，空闲线程存活时间</p>
</li>
<li><p>进程、线程、协程和程序各自是什么及区别 </p>
</li>
<li><p>上下文切换 </p>
</li>
<li><p>synchronized实现原理（结合JVM 连带讲锁升级） </p>
</li>
<li><p>可重入锁代码实现及原理 </p>
</li>
<li><p>ThreadLocal 一定要看源码]与Thread的关系、hash算法、内存泄漏及如何避免 </p>
</li>
<li><p>线程池 针对不同情况参数如何选择 </p>
</li>
<li><p>原子类 </p>
</li>
<li><p>CAS </p>
</li>
<li><p>AQS原理</p>
</li>
<li><p>多线程相关，volatile原理，JMM，synchronize优化（还讲了对象头markword 和类元指针），reentrantlock原理，AQS。</p>
</li>
<li><p>ThreadLocal原理，里面的map具体怎么实现的，和hashmap的不同，内存泄漏问题，具体应用场景</p>
</li>
<li><p>了解多线程吗?怎么实现，有没有用到代理模式？</p>
</li>
<li><p>了解线程池吗？</p>
</li>
<li><p>简单说下多线程和线程池</p>
</li>
<li><p>线程池 7 个参数的含义?</p>
</li>
<li><p>线程池提交任务的流程?</p>
</li>
<li><p>公平锁和非公平锁的实现(AQS 八股文)</p>
</li>
<li><p>volatile 的特性?</p>
</li>
<li><p>一个 volatile 变量,一个线程写,多个线程读会不会出现线程不安全的问题?</p>
</li>
<li><p>进程和线程的区别?</p>
</li>
<li><p>Java 创建线程的方式?</p>
</li>
<li><p>线程池参数和任务提交到执行的过程?</p>
</li>
<li><p>对于线程池参数的设定,你有没有自己的一套方案?</p>
</li>
<li><p>代码的同步怎么做?</p>
</li>
<li><p>线程池参数?</p>
</li>
<li><p>任务提交到线程池之后会遇到哪些情况?</p>
</li>
<li><p>用银行取钱的例子给我讲讲线程池?</p>
</li>
<li><p>sync 对应的字节码是什么?</p>
</li>
<li><p>sync 锁静态方法和非静态方法锁的分别是什么对象?</p>
</li>
<li><p>为什么锁的对象不一样?</p>
</li>
<li><p>i++是线程安全的吗？</p>
</li>
<li><p>Voletile关键字可以保证线程安全吗？</p>
</li>
<li><p>volatile</p>
</li>
<li><p>内存屏障底层实现</p>
</li>
<li><p>ReentrantLock内部类Sync，AQS相关</p>
</li>
<li><p>synchronized(重量级锁，轻量级锁，偏向锁，锁升级，锁膨胀，锁自旋)</p>
</li>
<li><p>悲观锁和乐观锁</p>
</li>
<li><p>synchronized的优化以及锁升级过程，与ReentrantLock区别 </p>
</li>
<li><p>介绍CAS </p>
</li>
<li><p>介绍AQS模版，哪些并发类是基于它的 </p>
</li>
<li><p>线程池实现原理，主要的7个参数，什么时候放入队列，什么时候拒绝策略，参数配置需要注意什么</p>
</li>
<li><p>进程和线程的区别</p>
</li>
<li><p>Java线程安全问题</p>
</li>
<li><p>Java中的锁分类</p>
</li>
<li><p>悲观锁synchronized的升级</p>
</li>
<li><p>乐观锁的问题</p>
</li>
<li><p>线程的创建方式 </p>
</li>
<li><p>线程工厂  </p>
</li>
<li><p>线程池的核心参数，过程 </p>
</li>
<li><p>四种线程池的问题 </p>
</li>
<li><p>Java中的锁 </p>
</li>
<li><p>乐观锁的ABA解决，自旋的问题  </p>
</li>
<li><p>CAS的底层  </p>
</li>
<li><p>synchronized锁升级过程  </p>
</li>
<li><p> ReentrantLock的AQS</p>
</li>
<li><p> synchronized自旋，升级锁的过程</p>
</li>
<li><p>synchronized锁底层？字节码？为什么那么设计？</p>
</li>
</ul>
<h2 id="6、Redis"><a href="#6、Redis" class="headerlink" title="6、Redis"></a>6、Redis</h2><ul>
<li>redis的一些问题（主从、集群模式，备份方式，底层数据结构）</li>
<li>Redis如何实现分布式锁，及其原理</li>
<li>Redis如何实现缓存</li>
<li>当一条数据通过Redis和数据库都没有命中时你是如何处理的，如果它重复发过来你怎么处理</li>
<li>聊一聊redis，（我说了持久化方式）如果RDB和AOF同时开启，默认使用哪种方式恢复，为什么？</li>
<li>Redis内存满了怎么办（redis内存淘汰机制）</li>
<li>Redis的数据类型和持久化方式？知道resp协议吗？</li>
<li>用redis实现分布式锁</li>
<li>Redis持久化方式，单机，主从，哨兵，集群这几种模型部署方式，这些架构能解决什么样的问题，存在什么问题？</li>
<li>部署redis时遇到过什么问题？比如增加redis的访问权限。项目中redis做的什么？在项目中用得什么存储模式。 </li>
<li>Redis有哪些数据类型，分别什么作用？如果redis出现故障比如断电宕机，如何避免数据丢失？</li>
<li>使用redis作缓存这个部分怎么做的？Redis和mysql数据如何保持一致性？</li>
<li>如何解决缓存穿透，布隆过滤器底层是如何实现的？</li>
<li>Redis有哪些数据类型，有哪些持久化方式</li>
<li>Redis底层数据结构，淘汰过期键的策略？</li>
<li>Redis数据结构， redis跳表是怎么实现的。</li>
<li>为什么用缓存（不光是说redis可以先从计算机cache说起，再到具体环境中，比如网上商城怎么怎么样需要缓存，然后各种缓存什么特点，最后为什么选redis，这里就可以顺便说说redis的结构） </li>
<li>对比两种常用缓存中间件redis和Memcached </li>
<li>redis单线程模型及为什么不需要多线程（6.0后又引入了多线程） </li>
<li>持久化策略 </li>
<li>数据过期淘汰策略 </li>
<li>内存淘汰机制 </li>
<li>缓存穿透 缓存雪崩 如何避免 </li>
<li>事务 </li>
<li>如何保证redis数据库数据一致性 </li>
<li>主从结构如何保证（主机-从机）数据一致性 </li>
<li>主机坏了如何选出新的主机</li>
<li>redis为什么可以做分布式锁</li>
<li>介绍一下redis单线程模型</li>
<li>redis过期策略</li>
<li>redis持久化，讲了aop rdb，具体场景，两者一起用，cow和fork，aof瘦身。 </li>
<li>缓存雪崩 缓存穿透（好像和击穿弄混了），布隆过滤器。 </li>
<li>redis zset，跳跃表，为什么不用红黑树，跳跃表实现讲了一下。 </li>
<li>分布式锁。答了incr,set,setnx，redlock。</li>
<li>redis集群相关，讲了哨兵，主从，集群，选举Leader，掉线了会发生什么，脑裂，hash一致性算法（讲了虚拟结点），哨兵之间订阅沟通还有一些不记得了。</li>
<li>为什么项目当中要使用缓存?</li>
<li>为什么 Redis 这么快?</li>
<li>Redis的持久化机制?</li>
<li>在生成 RDB 的过程当中,还能继续进行写入么?</li>
<li>为什么 AOF 是数据先落盘再写日志?而数据库是先写日志再落盘?</li>
<li>哨兵的选主策略?一个哨兵是怎么知道其他哨兵的存在的?</li>
<li>Redis分布式锁</li>
<li>redis持久化方式</li>
<li>redis主从复制（全量复制和部分复制）</li>
<li>redis哨兵机制（心跳机制和选举机制）</li>
<li>redis脑裂解决方案</li>
<li>Redis持久化方式（RDB，AOF）</li>
<li>Zset底层数据结构</li>
<li>ziplist和skiplist</li>
<li>什么时候是ziplist</li>
<li>Redis分布式锁</li>
<li>Redis基本数据结构</li>
<li>Redis中有哪些数据结构</li>
<li>Redis中的哨兵是干嘛的</li>
<li>Redis如何选举</li>
<li>Redis和MySQL双写问题</li>
<li>Redis如何主从复制</li>
<li>Redis有哪些应用（缓存和分布式锁（Redisson框架））</li>
<li>Redis的zset数据结构</li>
<li>Redis的rehash过程</li>
<li>Redis基础数据类型</li>
<li>Redis和Memcache的对比</li>
<li>Redis速度为什么快？为什么是单线程？</li>
</ul>
<h2 id="7、算法"><a href="#7、算法" class="headerlink" title="7、算法"></a>7、算法</h2><ul>
<li>反转链表，判断是否有环，返回换环点（我说了个hashset的思路，面试官说有重复节点怎么办）</li>
<li>有三个排好的数组（每个数组里放100w个数字），取出其中最小的10个数。</li>
<li>有8个数字，1，1，2，2，3，3，4，4，把这8个数字排成一排，两个1中间隔一个数，两个2中间隔2个数，两个3中间隔3个数，两个4中间隔4个数</li>
<li>快排的时间复杂度</li>
<li>两个大数相加，入参两个大数均用string表示</li>
<li>链表的倒数k个节点</li>
<li>说一下快排的思路</li>
<li>手写算法：快排</li>
<li>手写算法：反转链表</li>
<li>反转链表迭代法和递归法</li>
<li>字典树怎么实现的</li>
<li>如何实现两个大数相加</li>
<li>实现 斐波那契数列</li>
<li>找到数组中最小的k个数</li>
<li>算法题：删除 二叉树的右指针，返回 二叉树前序遍历顺序组成的 链表</li>
<li>算法题：删除 链表的倒数第k个节点。</li>
<li>你知道的数据结构有哪些</li>
<li>说下你对红黑树了解哪些</li>
<li>括号匹配</li>
<li>算法题，单词翻转</li>
<li>算法题，最长公共子串</li>
<li>有哪些排序算法，复杂度？稳定性？</li>
<li>翻转链表（迭代和递归都要） </li>
<li>自行设计LinkedList数据结构 </li>
<li>三个线程循环打印 A、B、C </li>
<li>写一段死锁代码 </li>
<li>红包分配算法</li>
<li>括号匹配 </li>
<li>青蛙跳台阶</li>
<li>构造一个最小栈 </li>
<li>判断是否平衡二叉树</li>
<li>topK</li>
<li>找出字符串中最长回文串</li>
<li>数组中出现超过半数的元素</li>
</ul>
<h2 id="8、JVM"><a href="#8、JVM" class="headerlink" title="8、JVM"></a>8、JVM</h2><ul>
<li>jvm内存里的堆和栈的区别和特点，栈帧</li>
<li>Java类加载的过程，分几步，（从.Class文件变成一个实际的对象需要哪些操作）</li>
<li>类初始化的过程</li>
<li>JVM分成哪几块，Java内存模型，运行时数据区有哪几部分</li>
<li>本地方法区里放的是什么</li>
<li>Java方面看过那些源码？线程池用过吗？有哪些参数？拒绝策略？</li>
<li>讲一下垃圾回收机制？类加载机制，双亲委派模型？</li>
<li>JVM内存模型，类加载器</li>
<li>说一下GC，A引用B，B引用A，他们会被会被回收吗？</li>
<li>JVM内存模型里的栈帧知道吗？</li>
<li>青年代有哪些区域，用的什么GC算法，讲讲复制算法的逻辑，老年代的回收算法用的什么？假如发生了一次full GC，程序会吊起吗？</li>
<li>讲讲GC算法，新生代分为几块，比例是多少？用的什么回收算法？什么情况下发生full GC？</li>
<li>JVM垃圾回收 算法，复制 算法，标记清除 算法。 老年代的GC 算法，串行GC和并行GC，具体流程。 进行JVM参数调整的目的是什么？通过分配合理的年轻代和老年代区间，减少FullGC次数。</li>
<li>JMM结构（最好可以针对不同虚拟机 不同版本 或者只说HotSpot虚拟机）每部分的作用，及什么时候会用到 </li>
<li>java对象创建过程 </li>
<li>类加载机制 </li>
<li>内存分配与回收策略 </li>
<li>如何判断对象是否可被回收 </li>
<li>四种引用 </li>
<li>垃圾回收算法</li>
<li>垃圾回收器</li>
<li>JVM内存布局，虚拟机栈本地方法栈，栈帧里的结构，哪些区域线程私有公有。 </li>
<li>堆区域的划分，垃圾回收算法，标记算法，内存分配算法（和垃圾回收器相关）。 </li>
<li>还问了项目中使用了什么垃圾回收器，serial serial old。 </li>
<li>方法区，元空间。 具体怎么优化解决STW问题。 </li>
<li>对象的所有过程，创建销毁，加载链接初始化，分配内存CAS（还讲了TLAB参数），具体怎么移动到老年代（15），还讲了具体操作数栈中的过程，内存泄漏。 </li>
<li>CMS 和 G1相关也讲了一下。</li>
<li>简单说下jvm和jmm</li>
<li>JVM 内存模型(概述)</li>
<li>讲讲双亲委派,为什么?</li>
<li>你觉得双亲委派这个名字有没有什么问题?你讲讲自己的理解</li>
<li>打破双亲委派的例子,举个例子?怎么打破?</li>
<li>你现在用什么 GC 收集器?</li>
<li>Eden 区的对象回收策略?</li>
<li>CMS 的 STW 情况?</li>
<li>CMS 什么情况会触发 Full GC?</li>
<li>新对象一定会在新生代 new 出来么?</li>
<li>Java8 有什么新的 GC 算法</li>
<li>了解 G1 收集器么?</li>
<li>哪些情况会出现 OOM?</li>
<li>堆中内存分配比例?</li>
<li>新生代 GC 工作流程?</li>
<li>为什么新生代年龄是 15 次进入老年代?</li>
<li>大对象进入老年代,这个大对象是有多大?</li>
<li>怎么排查 OOM?</li>
<li>双亲委派的理解?</li>
<li>为什么有双亲委派?一定要遵循双亲委派么?</li>
<li>怎么打破双亲委派?</li>
<li>哪些情况下会产生 Full GC?</li>
<li>方法区的大小怎么设置?</li>
<li>栈大小怎么设置?</li>
<li>你遇到过堆栈溢出的情况么?怎么解决的?</li>
<li>Java 的类加载过程?什么时候回触发到 Java 类的加载?什么时候回触发类的卸载?</li>
<li>双亲委派?打破双亲委派?</li>
<li>重载和重写在 JVM 层面是怎么鉴别的?</li>
<li>JVM当中的方法内联?</li>
<li>Java 的类加载过程?</li>
<li>JVM内存模型概念?</li>
<li>你对方法区/元空间的理解?</li>
<li>堆中内存的分配?</li>
<li>永久代会涉及到 GC 回收么?</li>
<li>程序运行的时候,怎么监控内存使用情况?</li>
<li>程序运行的时候,怎么看堆栈信息?</li>
<li>Java 类加载的过程?</li>
<li>魔数是什么?</li>
<li>为什么叫双亲委派?你有没有觉得这个名字怪怪的?</li>
<li>在一个类中调用了另一个类的私有方法能不能通过编译?</li>
<li> 类加载过程？</li>
<li>G1收集器和传统收集器的区别？</li>
<li>jvm内存结构、垃圾回收算法、垃圾回收器、类加载机制</li>
<li>双亲委派和破坏双亲委派</li>
<li>发生minor GC的情况</li>
<li>VM的运行时内存结构</li>
<li>元数据区</li>
<li>GC回收</li>
<li>垃圾回收算法</li>
<li>垃圾回收器</li>
<li>CMS</li>
<li>G1</li>
<li>jvm(分区，分代回收，垃圾回收算法，垃圾收集器等)</li>
</ul>
<h2 id="9、设计模式"><a href="#9、设计模式" class="headerlink" title="9、设计模式"></a>9、设计模式</h2><ul>
<li>写一个单例模式，懒汉加载</li>
<li>Java设计模式知道哪些？简单手写个单例模式</li>
<li>设计模式，单例模式、工厂模式、代理模式</li>
<li>最容易考到是手写一个单例设计模式，一定要搞清楚那几种各自哪里有问题。</li>
<li>spring、redis、rocketmq中用到了什么设计模式？在哪用到的？</li>
<li>你的项目中用到设计模式了么 ？为什么用？ 在什么情况下用？ 用它的好处是什么？ 如果不用会怎样</li>
<li>说一下常用的设计模式</li>
<li>单例模式怎么实现</li>
<li>谈到了设计模式，说下常见的设计模式</li>
<li>工厂模式详细介绍一下</li>
<li>常见设计模式，jdk里面哪些类用到了什么设计模式</li>
<li>线程安全的单例模式</li>
</ul>
<h2 id="10、Spring"><a href="#10、Spring" class="headerlink" title="10、Spring"></a>10、Spring</h2><ul>
<li>讲一下AOP</li>
<li>Springboot的bean注入和bean的生命周期？</li>
<li>Spring框架如何处理接口请求？Springboot注解了解多少？</li>
<li>Spring和springboot有什么区别？</li>
<li>Spring的AOP如何处理的？</li>
<li>介绍一下spring( or spring boot)吧（什么是spring 有什么特点 优势 对比不用的情况） </li>
<li>列举一些比较重要活比较常用的模块（aop orm test… 官网那张图） </li>
<li>AOP IOC </li>
<li>bean 生命周期 如何加载一个自己的bean进容器 </li>
<li>事务 </li>
<li>解释一下常用的注解</li>
<li>AOP原理，IOC原理。循环依赖。CGLIB,JDK proxy，讲了底层缓存，之间的区别。</li>
<li>OC 的初始化流程?</li>
<li>AOP是怎么和 IOC 做整合的?</li>
<li>循环依赖怎么解决?</li>
<li>你对 IOC 的理解?</li>
<li>实际开发当中你哪些地方使用了 Bean 的前置后置处理器?</li>
<li>AOP 是怎么和 IOC 进行整合的?</li>
<li>Spring 怎么把 Java 对象初始化成 SpringBean 的?</li>
<li>IOC 的初始化流程?</li>
<li>为什么会有 SpringBoot 的出现?</li>
<li>讲讲自动装配?</li>
<li>你更倾向于 MyBatis 还是 JPA?</li>
<li>这两个 ORM 的实现和区别?</li>
<li>IOC 的特性?你对 IOC 的理解?</li>
<li>我们自己也可以实现 IOC 和 AOP,甚至是前置后置处理器,为什么还要用 Spring 提供的?</li>
<li>怎样才能知道 Spring 的 IOC 容器已经完全初始化了?</li>
<li>Spring 的后置处理器接口名字是什么?</li>
<li>AOP 和 IOC 的整合流程?</li>
<li>AOP 是怎么做动态代理的?</li>
<li>CGLIB 是怎么操作字节码的?</li>
<li>Spring IOC和AOP 设计原理，为什么要这样设计 </li>
<li>Spring bean 的生命周期以及作用域 </li>
<li>Spring中常用注解 </li>
<li>Spring事务，传播特性 </li>
<li>Spring MVC 中后端处理流程 </li>
<li>Spring 启动流程</li>
<li>Springboot自动配置原理</li>
<li>Springboot自动装配的时候出现bean的错误，怎么解决</li>
<li>mybatis预编译</li>
<li>mybatis缓存</li>
<li>mybatis和dao对应的原理</li>
<li>springmvc的请求流程</li>
</ul>
<h2 id="11、消息队列"><a href="#11、消息队列" class="headerlink" title="11、消息队列"></a>11、消息队列</h2><ul>
<li>如何使用的rabbitmq来做延时队列？在写这个功能的时候有什么问题？</li>
<li>[Rabbitmq如何解决重复消费？Redis如何实现分布式锁</li>
<li>有哪些常见的消息队列？用过哪些？</li>
<li>队列模型和发布/订阅模型的区别？</li>
<li>如何保证消息的有序性？</li>
<li>如何保证消息不丢失？</li>
<li>如何不重复消费消息？也就是消息消费的幂等性</li>
<li>如果让你来设计一个消息队列，该如何考虑</li>
</ul>
<h2 id="12、好文"><a href="#12、好文" class="headerlink" title="12、好文"></a>12、好文</h2><ul>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/585756?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/585756?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/597041?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/597041?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/601272?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/601272?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/608462?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/608462?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/613239?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/613239?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/624512?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/624512?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/627413?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/627413?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/628372?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/628372?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/634359?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/634359?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
<li><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/639644?channel=-1&amp;source_id=profile_follow_post_nctrack">https://www.nowcoder.com/discuss/639644?channel=-1&amp;source_id=profile_follow_post_nctrack</a></li>
</ul>

                
            </div>
            <hr/>

            

    <div class="reprint" id="reprint-statement">
        
            <div class="reprint__author">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-user">
                        文章作者:
                    </i>
                </span>
                <span class="reprint-info">
                    <a href="/about" rel="external nofollow noreferrer">Gtwff</a>
                </span>
            </div>
            <div class="reprint__type">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-link">
                        文章链接:
                    </i>
                </span>
                <span class="reprint-info">
                    <a href="https://kuangty.gitee.io/2021/10/30/%E5%85%AB%E8%82%A1%E6%96%87/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB/">https://kuangty.gitee.io/2021/10/30/%E5%85%AB%E8%82%A1%E6%96%87/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB/</a>
                </span>
            </div>
            <div class="reprint__notice">
                <span class="reprint-meta" style="font-weight: bold;">
                    <i class="fas fa-copyright">
                        版权声明:
                    </i>
                </span>
                <span class="reprint-info">
                    本博客所有文章除特別声明外，均采用
                    <a href="https://creativecommons.org/licenses/by/4.0/deed.zh" rel="external nofollow noreferrer" target="_blank">CC BY 4.0</a>
                    许可协议。转载请注明来源
                    <a href="/about" target="_blank">Gtwff</a>
                    !
                </span>
            </div>
        
    </div>

    <script async defer>
      document.addEventListener("copy", function (e) {
        let toastHTML = '<span>复制成功，请遵循本文的转载规则</span><button class="btn-flat toast-action" onclick="navToReprintStatement()" style="font-size: smaller">查看</a>';
        M.toast({html: toastHTML})
      });

      function navToReprintStatement() {
        $("html, body").animate({scrollTop: $("#reprint-statement").offset().top - 80}, 800);
      }
    </script>



            <div class="tag_share" style="display: block;">
                <div class="post-meta__tag-list" style="display: inline-block;">
                    
                        <div class="article-tag">
                            
                                <a href="/tags/%E9%9D%A2%E8%AF%95%E9%A2%98/">
                                    <span class="chip bg-color">面试题</span>
                                </a>
                            
                        </div>
                    
                </div>
                <div class="post_share" style="zoom: 80%; width: fit-content; display: inline-block; float: right; margin: -0.15rem 0;">
                    <link rel="stylesheet" type="text/css" href="/libs/share/css/share.min.css">
<div id="article-share">

    
    <div class="social-share" data-sites="twitter,facebook,google,qq,qzone,wechat,weibo,douban,linkedin" data-wechat-qrcode-helper="<p>微信扫一扫即可分享！</p>"></div>
    <script src="/libs/share/js/social-share.min.js"></script>
    

    

</div>

                </div>
            </div>
            
                <style>
    #reward {
        margin: 40px 0;
        text-align: center;
    }

    #reward .reward-link {
        font-size: 1.4rem;
        line-height: 38px;
    }

    #reward .btn-floating:hover {
        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2);
    }

    #rewardModal {
        width: 320px;
        height: 350px;
    }

    #rewardModal .reward-title {
        margin: 15px auto;
        padding-bottom: 5px;
    }

    #rewardModal .modal-content {
        padding: 10px;
    }

    #rewardModal .close {
        position: absolute;
        right: 15px;
        top: 15px;
        color: rgba(0, 0, 0, 0.5);
        font-size: 1.3rem;
        line-height: 20px;
        cursor: pointer;
    }

    #rewardModal .close:hover {
        color: #ef5350;
        transform: scale(1.3);
        -moz-transform:scale(1.3);
        -webkit-transform:scale(1.3);
        -o-transform:scale(1.3);
    }

    #rewardModal .reward-tabs {
        margin: 0 auto;
        width: 210px;
    }

    .reward-tabs .tabs {
        height: 38px;
        margin: 10px auto;
        padding-left: 0;
    }

    .reward-content ul {
        padding-left: 0 !important;
    }

    .reward-tabs .tabs .tab {
        height: 38px;
        line-height: 38px;
    }

    .reward-tabs .tab a {
        color: #fff;
        background-color: #ccc;
    }

    .reward-tabs .tab a:hover {
        background-color: #ccc;
        color: #fff;
    }

    .reward-tabs .wechat-tab .active {
        color: #fff !important;
        background-color: #22AB38 !important;
    }

    .reward-tabs .alipay-tab .active {
        color: #fff !important;
        background-color: #019FE8 !important;
    }

    .reward-tabs .reward-img {
        width: 210px;
        height: 210px;
    }
</style>

<div id="reward">
    <a href="#rewardModal" class="reward-link modal-trigger btn-floating btn-medium waves-effect waves-light red">赏</a>

    <!-- Modal Structure -->
    <div id="rewardModal" class="modal">
        <div class="modal-content">
            <a class="close modal-close"><i class="fas fa-times"></i></a>
            <h4 class="reward-title">你的赏识是我前进的动力</h4>
            <div class="reward-content">
                <div class="reward-tabs">
                    <ul class="tabs row">
                        <li class="tab col s6 alipay-tab waves-effect waves-light"><a href="#alipay">支付宝</a></li>
                        <li class="tab col s6 wechat-tab waves-effect waves-light"><a href="#wechat">微 信</a></li>
                    </ul>
                    <div id="alipay">
                        <img src="/medias/reward/alipay.jpg" class="reward-img" alt="支付宝打赏二维码">
                    </div>
                    <div id="wechat">
                        <img src="/medias/reward/wechat.png" class="reward-img" alt="微信打赏二维码">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    $(function () {
        $('.tabs').tabs();
    });
</script>

            
        </div>
    </div>

    

    

    

    

    

    

    

    

    

<article id="prenext-posts" class="prev-next articles">
    <div class="row article-row">
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge left-badge text-color">
                <i class="fas fa-chevron-left"></i>&nbsp;上一篇</div>
            <div class="card">
                <a href="/2021/10/30/JVM/JVM_%E7%AE%80%E8%BF%B0/">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/8.jpg" class="responsive-img" alt="冰冰教你学 JVM">
                        
                        <span class="card-title">冰冰教你学 JVM</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary block-with-text">
                        
                            
                        
                    </div>
                    <div class="publish-info">
                        <span class="publish-date">
                            <i class="far fa-clock fa-fw icon-date"></i>2021-10-30
                        </span>
                        <span class="publish-author">
                            
                            <i class="fas fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/JVM/" class="post-category">
                                    JVM
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/JVM-%E7%AE%80%E8%BF%B0/">
                        <span class="chip bg-color">JVM 简述</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge right-badge text-color">
                下一篇&nbsp;<i class="fas fa-chevron-right"></i>
            </div>
            <div class="card">
                <a href="/2021/10/30/JVM/JVM%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/23.jpg" class="responsive-img" alt="你知道一个类是如何加载的吗">
                        
                        <span class="card-title">你知道一个类是如何加载的吗</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary block-with-text">
                        
                            
                        
                    </div>
                    <div class="publish-info">
                            <span class="publish-date">
                                <i class="far fa-clock fa-fw icon-date"></i>2021-10-30
                            </span>
                        <span class="publish-author">
                            
                            <i class="fas fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/JVM/" class="post-category">
                                    JVM
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/JVM-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/">
                        <span class="chip bg-color">JVM 类加载子系统</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
    </div>
</article>

</div>



<!-- 代码块功能依赖 -->
<script type="text/javascript" src="/libs/codeBlock/codeBlockFuction.js"></script>

<!-- 代码语言 -->

<script type="text/javascript" src="/libs/codeBlock/codeLang.js"></script>


<!-- 代码块复制 -->

<script type="text/javascript" src="/libs/codeBlock/codeCopy.js"></script>


<!-- 代码块收缩 -->

<script type="text/javascript" src="/libs/codeBlock/codeShrink.js"></script>


    </div>
    <div id="toc-aside" class="expanded col l3 hide-on-med-and-down">
        <div class="toc-widget card" style="background-color: white;">
            <div class="toc-title"><i class="far fa-list-alt"></i>&nbsp;&nbsp;目录</div>
            <div id="toc-content"></div>
        </div>
    </div>
</div>

<!-- TOC 悬浮按钮. -->

<div id="floating-toc-btn" class="hide-on-med-and-down">
    <a class="btn-floating btn-large bg-color">
        <i class="fas fa-list-ul"></i>
    </a>
</div>


<script src="/libs/tocbot/tocbot.min.js"></script>
<script>
    $(function () {
        tocbot.init({
            tocSelector: '#toc-content',
            contentSelector: '#articleContent',
            headingsOffset: -($(window).height() * 0.4 - 45),
            collapseDepth: Number('0'),
            headingSelector: 'h1, h2, h3, h4'
        });

        // modify the toc link href to support Chinese.
        let i = 0;
        let tocHeading = 'toc-heading-';
        $('#toc-content a').each(function () {
            $(this).attr('href', '#' + tocHeading + (++i));
        });

        // modify the heading title id to support Chinese.
        i = 0;
        $('#articleContent').children('h1, h2, h3, h4').each(function () {
            $(this).attr('id', tocHeading + (++i));
        });

        // Set scroll toc fixed.
        let tocHeight = parseInt($(window).height() * 0.4 - 64);
        let $tocWidget = $('.toc-widget');
        $(window).scroll(function () {
            let scroll = $(window).scrollTop();
            /* add post toc fixed. */
            if (scroll > tocHeight) {
                $tocWidget.addClass('toc-fixed');
            } else {
                $tocWidget.removeClass('toc-fixed');
            }
        });

        
        /* 修复文章卡片 div 的宽度. */
        let fixPostCardWidth = function (srcId, targetId) {
            let srcDiv = $('#' + srcId);
            if (srcDiv.length === 0) {
                return;
            }

            let w = srcDiv.width();
            if (w >= 450) {
                w = w + 21;
            } else if (w >= 350 && w < 450) {
                w = w + 18;
            } else if (w >= 300 && w < 350) {
                w = w + 16;
            } else {
                w = w + 14;
            }
            $('#' + targetId).width(w);
        };

        // 切换TOC目录展开收缩的相关操作.
        const expandedClass = 'expanded';
        let $tocAside = $('#toc-aside');
        let $mainContent = $('#main-content');
        $('#floating-toc-btn .btn-floating').click(function () {
            if ($tocAside.hasClass(expandedClass)) {
                $tocAside.removeClass(expandedClass).hide();
                $mainContent.removeClass('l9');
            } else {
                $tocAside.addClass(expandedClass).show();
                $mainContent.addClass('l9');
            }
            fixPostCardWidth('artDetail', 'prenext-posts');
        });
        
    });
</script>

    

</main>




    <footer class="page-footer bg-color">
    
        <link rel="stylesheet" href="/libs/aplayer/APlayer.min.css">
<style>
    .aplayer .aplayer-lrc p {
        
        display: none;
        
        font-size: 12px;
        font-weight: 700;
        line-height: 16px !important;
    }

    .aplayer .aplayer-lrc p.aplayer-lrc-current {
        
        display: none;
        
        font-size: 15px;
        color: #42b983;
    }

    
    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
        left: -66px !important;
    }

    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
        left: 0px !important;
    }

    
</style>
<div class="">
    
    <div class="row">
        <meting-js class="col l8 offset-l2 m10 offset-m1 s12"
                   server="netease"
                   type="playlist"
                   id="503838841"
                   fixed='true'
                   autoplay='false'
                   theme='#42b983'
                   loop='all'
                   order='random'
                   preload='auto'
                   volume='0.7'
                   list-folded='true'
        >
        </meting-js>
    </div>
</div>

<script src="/libs/aplayer/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

    

    <div class="container row center-align"
         style="margin-bottom: 15px !important;">
        <div class="col s12 m8 l8 copy-right">
            Copyright&nbsp;&copy;
            
                <span id="year">2019-2022</span>
            
            <span id="year">2019</span>
            <a href="/about" target="_blank">Gtwff</a>
            |&nbsp;Powered by&nbsp;<a href="https://hexo.io/" target="_blank">Hexo</a>
            |&nbsp;Theme&nbsp;<a href="https://github.com/blinkfox/hexo-theme-matery" target="_blank">Matery</a>
            <br>
            
                &nbsp;<i class="fas fa-chart-area"></i>&nbsp;站点总字数:&nbsp;<span
                        class="white-color">577.4k</span>
            
            
            
                
            
            
                <span id="busuanzi_container_site_pv">
                &nbsp;|&nbsp;<i class="far fa-eye"></i>&nbsp;总访问量:&nbsp;
                    <span id="busuanzi_value_site_pv" class="white-color"></span>
            </span>
            
            
                <span id="busuanzi_container_site_uv">
                &nbsp;|&nbsp;<i class="fas fa-users"></i>&nbsp;总访问人数:&nbsp;
                    <span id="busuanzi_value_site_uv" class="white-color"></span>
            </span>
            
            <br>

            <!-- 运行天数提醒. -->
            
                <span id="sitetime"> Loading ...</span>
                <script>
                    var calcSiteTime = function () {
                        var seconds = 1000;
                        var minutes = seconds * 60;
                        var hours = minutes * 60;
                        var days = hours * 24;
                        var years = days * 365;
                        var today = new Date();
                        var startYear = "2019";
                        var startMonth = "6";
                        var startDate = "28";
                        var startHour = "0";
                        var startMinute = "0";
                        var startSecond = "0";
                        var todayYear = today.getFullYear();
                        var todayMonth = today.getMonth() + 1;
                        var todayDate = today.getDate();
                        var todayHour = today.getHours();
                        var todayMinute = today.getMinutes();
                        var todaySecond = today.getSeconds();
                        var t1 = Date.UTC(startYear, startMonth, startDate, startHour, startMinute, startSecond);
                        var t2 = Date.UTC(todayYear, todayMonth, todayDate, todayHour, todayMinute, todaySecond);
                        var diff = t2 - t1;
                        var diffYears = Math.floor(diff / years);
                        var diffDays = Math.floor((diff / days) - diffYears * 365);

                        // 区分是否有年份.
                        var language = 'zh-CN';
                        if (startYear === String(todayYear)) {
                            document.getElementById("year").innerHTML = todayYear;
                            var daysTip = 'This site has been running for ' + diffDays + ' days';
                            if (language === 'zh-CN') {
                                daysTip = '本站已运行 ' + diffDays + ' 天';
                            } else if (language === 'zh-HK') {
                                daysTip = '本站已運行 ' + diffDays + ' 天';
                            }
                            document.getElementById("sitetime").innerHTML = daysTip;
                        } else {
                            document.getElementById("year").innerHTML = startYear + " - " + todayYear;
                            var yearsAndDaysTip = 'This site has been running for ' + diffYears + ' years and '
                                + diffDays + ' days';
                            if (language === 'zh-CN') {
                                yearsAndDaysTip = '本站已运行 ' + diffYears + ' 年 ' + diffDays + ' 天';
                            } else if (language === 'zh-HK') {
                                yearsAndDaysTip = '本站已運行 ' + diffYears + ' 年 ' + diffDays + ' 天';
                            }
                            document.getElementById("sitetime").innerHTML = yearsAndDaysTip;
                        }
                    }

                    calcSiteTime();
                </script>
            
            <br>
            
        </div>
        <div class="col s12 m4 l4 social-link social-statis">
    <a href="https://github.com/kuangtianyu" class="tooltipped" target="_blank" data-tooltip="访问我的GitHub" data-position="top" data-delay="50">
        <i class="fab fa-github"></i>
    </a>



    <a href="mailto:1575235124@qq.com" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50">
        <i class="fas fa-envelope-open"></i>
    </a>







    <a href="tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=1575235124" class="tooltipped" target="_blank" data-tooltip="QQ联系我: 1575235124" data-position="top" data-delay="50">
        <i class="fab fa-qq"></i>
    </a>





    <a href="https://www.zhihu.com/people/kuang-tian-yu-59" class="tooltipped" target="_blank" data-tooltip="关注我的知乎: https://www.zhihu.com/people/kuang-tian-yu-59" data-position="top" data-delay="50">
        <i class="fab fa-zhihu1">知</i>
    </a>



    <a href="/atom.xml" class="tooltipped" target="_blank" data-tooltip="RSS 订阅" data-position="top" data-delay="50">
        <i class="fas fa-rss"></i>
    </a>

</div>
    </div>
</footer>

<div class="progress-bar"></div>


    <!-- 搜索遮罩框 -->
<div id="searchModal" class="modal">
    <div class="modal-content">
        <div class="search-header">
            <span class="title"><i class="fas fa-search"></i>&nbsp;&nbsp;搜索</span>
            <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字"
                   class="search-input">
        </div>
        <div id="searchResult"></div>
    </div>
</div>

<script type="text/javascript">
$(function () {
    var searchFunc = function (path, search_id, content_id) {
        'use strict';
        $.ajax({
            url: path,
            dataType: "xml",
            success: function (xmlResponse) {
                // get the contents from search data
                var datas = $("entry", xmlResponse).map(function () {
                    return {
                        title: $("title", this).text(),
                        content: $("content", this).text(),
                        url: $("url", this).text()
                    };
                }).get();
                var $input = document.getElementById(search_id);
                var $resultContent = document.getElementById(content_id);
                $input.addEventListener('input', function () {
                    var str = '<ul class=\"search-result-list\">';
                    var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
                    $resultContent.innerHTML = "";
                    if (this.value.trim().length <= 0) {
                        return;
                    }
                    // perform local searching
                    datas.forEach(function (data) {
                        var isMatch = true;
                        var data_title = data.title.trim().toLowerCase();
                        var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase();
                        var data_url = data.url;
                        data_url = data_url.indexOf('/') === 0 ? data.url : '/' + data_url;
                        var index_title = -1;
                        var index_content = -1;
                        var first_occur = -1;
                        // only match artiles with not empty titles and contents
                        if (data_title !== '' && data_content !== '') {
                            keywords.forEach(function (keyword, i) {
                                index_title = data_title.indexOf(keyword);
                                index_content = data_content.indexOf(keyword);
                                if (index_title < 0 && index_content < 0) {
                                    isMatch = false;
                                } else {
                                    if (index_content < 0) {
                                        index_content = 0;
                                    }
                                    if (i === 0) {
                                        first_occur = index_content;
                                    }
                                }
                            });
                        }
                        // show search results
                        if (isMatch) {
                            str += "<li><a href='" + data_url + "' class='search-result-title'>" + data_title + "</a>";
                            var content = data.content.trim().replace(/<[^>]+>/g, "");
                            if (first_occur >= 0) {
                                // cut out 100 characters
                                var start = first_occur - 20;
                                var end = first_occur + 80;
                                if (start < 0) {
                                    start = 0;
                                }
                                if (start === 0) {
                                    end = 100;
                                }
                                if (end > content.length) {
                                    end = content.length;
                                }
                                var match_content = content.substr(start, end);
                                // highlight all keywords
                                keywords.forEach(function (keyword) {
                                    var regS = new RegExp(keyword, "gi");
                                    match_content = match_content.replace(regS, "<em class=\"search-keyword\">" + keyword + "</em>");
                                });

                                str += "<p class=\"search-result\">" + match_content + "...</p>"
                            }
                            str += "</li>";
                        }
                    });
                    str += "</ul>";
                    $resultContent.innerHTML = str;
                });
            }
        });
    };

    searchFunc('/search.xml', 'searchInput', 'searchResult');
});
</script>

    <!-- 回到顶部按钮 -->
<div id="backTop" class="top-scroll">
    <a class="btn-floating btn-large waves-effect waves-light" href="#!">
        <i class="fas fa-arrow-up"></i>
    </a>
</div>


    <script src="/libs/materialize/materialize.min.js"></script>
    <script src="/libs/masonry/masonry.pkgd.min.js"></script>
    <script src="/libs/aos/aos.js"></script>
    <script src="/libs/scrollprogress/scrollProgress.min.js"></script>
    <script src="/libs/lightGallery/js/lightgallery-all.min.js"></script>
    <script src="/js/matery.js"></script>

    <!-- Baidu Analytics -->

    <!-- Baidu Push -->

<script>
    (function () {
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        } else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
</script>

    
    <script src="/libs/others/clicklove.js" async="async"></script>
    
    
    <script async src="/libs/others/busuanzi.pure.mini.js"></script>
    

    

    

    <!--腾讯兔小巢-->
    
    
    <script type="text/javascript" color="0,0,255"
        pointColor="0,0,255" opacity='0.7'
        zIndex="-1" count="99"
        src="/libs/background/canvas-nest.js"></script>
    

    
    
    <script type="text/javascript" size="150" alpha='0.6'
        zIndex="-1" src="/libs/background/ribbon-refresh.min.js" async="async"></script>
    

    
    <script type="text/javascript" src="/libs/background/ribbon-dynamic.js" async="async"></script>
    

    
    <script src="/libs/instantpage/instantpage.js" type="module"></script>
    

</body>

</html>
